Health Worker Registry
The health worker registry is the authoritative list of people who provide care, with a permanent identifier for each. It answers who did this, were they qualified to, and where are they posted?
It is the third of the OpenHIE core registries and the one most often deferred, because the immediate benefit is less obvious than a facility list. The benefit appears as soon as anything needs attribution or authorisation.
Why it matters architecturally
| Need | What the registry provides |
|---|---|
| Attribution | Which clinician made this assertion — a legal and clinical-safety requirement, not a nicety |
| Authorisation | A role in the registry is the input to access control; see identity and security |
| Referral | Directing a referral to a named provider, not just a facility |
| Workforce planning | Actual distribution of cadres against population and facility |
| Payroll and payment integrity | Detecting ghost workers, duplicate postings, and expired licences |
| Continuing education | Tracking training against the people who received it |
| Regulation | Verifying that the person prescribing is licensed to prescribe |
The last point is the one that converts the registry from an administrative asset into a safety control.
Two things that are often conflated
┌──────────────────────────┐ ┌───────────────────────────────┐
│ Practitioner │ │ PractitionerRole │
│ the person │ 1 ─▶ n │ a posting │
│ · identifier │ │ · organisation / facility │
│ · name │ │ · role / cadre │
│ · qualifications │ │ · specialty │
│ · licences + expiry │ │ · period (from / to) │
│ · contact │ │ · employment type │
└──────────────────────────┘ └───────────────────────────────┘
A person is one record for life. Their postings are many records over time, and a person can hold more than one simultaneously — a doctor working in a public hospital in the morning and a private clinic in the afternoon is the normal case, not an edge case.
Systems that model "health worker at facility X" as a single flat record cannot represent transfers, dual practice or historical attribution, and cannot answer "who was working here when this happened?"
The FHIR split into Practitioner and PractitionerRole exists precisely for
this, and following it saves a rewrite.
What it holds
Person-level:
- Permanent identifier, namespaced
- Name, including previous names
- Date of birth and sex, for disambiguation
- National identifier, where lawful and available
- Cadre / profession
- Qualifications: award, institution, date
- Licence or registration number, issuing council, status and expiry
- Contact details
Posting-level:
- Facility (facility registry identifier)
- Role and specialty
- Employment type — permanent, contract, volunteer, seconded
- Period, with an end date when it ends
- Scope of practice, where the regulatory regime defines one
Not held: performance appraisals, salary, disciplinary detail. Those belong to human resource systems, linked by identifier. A registry that accumulates sensitive employment data acquires an access-control problem that prevents it from being the widely readable service the architecture needs.
Where the data comes from
This is the hard part, and it is organisational rather than technical. The data is spread across bodies that do not usually share:
| Source | Holds | Problem |
|---|---|---|
| Professional councils | Licensure and qualification | Often per-profession, separately governed, sometimes paper |
| Ministry human resources / payroll | Postings and employment | Optimised for payment, not for identity |
| Training institutions | Graduates | Rarely connected to anything |
| Facility records | Who actually works there | Most accurate, least systematised |
| Private sector employers | Private-sector workforce | Frequently outside any national system |
The registry's value comes from reconciling these. That means it needs a mandate, not just an API. Councils will not surrender authority over licensure data; the workable design is federation of authority with centralisation of identity — the registry holds the identifier and the current status, and each council remains the source of truth for its own licensure records.
Licence status is time-varying and safety-critical
A licence that expired last month must be visible as expired today, not at the next annual sync. Design:
- Effective periods on every qualification and licence
- A status field with a controlled vocabulary — active, expired, suspended, revoked, provisional
- A change feed so that dependent systems learn of a suspension quickly
- A policy for what a dependent system does when the registry is unreachable — fail open (allow, log) or fail closed (block)? For prescribing authority this is a clinical safety decision that must be made explicitly.
Registry identity and login identity
They are different, and confusing them causes real problems.
- The registry identifier identifies the person professionally and permanently. It appears in clinical records as the author.
- The login identity authenticates a user to a specific system, and is managed by an identity provider such as Keycloak.
The link between them is an attribute on the login identity — the registry identifier as a claim in the token. That way a clinician who changes employer, email address and username still has a continuous professional identity, and their historical records remain attributable.
Consequence for point-of-service systems: every clinical record should carry the registry identifier, not a local username. This belongs in procurement requirements.
Community health workers
Frequently excluded, and the exclusion undermines the registry.
CHWs may be volunteers, may not be licensed by any council, may be paid by a non-governmental organisation, and may serve a community rather than a facility. But they generate a large share of the data in primary care systems, they make referrals, and their work needs attribution.
Include them, with:
- A cadre value for CHW, and sub-cadres if the programme distinguishes them
- Association with a community unit or catchment rather than only a facility
- Supervisor relationships, since supervision structure is how CHW programmes actually operate
- Training records in place of licensure
See community health.
Getting started
- Pick one cadre with an existing, reasonably clean list — often nurses or doctors from a council register
- Assign permanent identifiers and publish the namespace
- Reconcile against payroll to find ghost workers and unposted staff; the discrepancy list is usually what secures the mandate to continue
- Expose a read API and a bulk snapshot
- Require the identifier in one high-value system — usually the EMR's author field
- Add cadres and private-sector workers incrementally
Step 3 is what makes this fundable. A workforce registry that identifies payroll discrepancies pays for itself in a way that "improved data quality" never does in a budget submission.
Standards and tooling
- FHIR —
Practitioner,PractitionerRole,Organization,Location - iHRIS — open-source human resources information system for health, designed for exactly this purpose; Tier 2
- DHIS2 — sometimes used to hold workforce data; workable for aggregate workforce statistics, weak as an identity registry
- HR-XML / national civil service standards — where payroll integration is required
References
- OpenHIE health worker registry — https://ohie.org/
- FHIR
Practitioner— https://hl7.org/fhir/practitioner.html - FHIR
PractitionerRole— https://hl7.org/fhir/practitionerrole.html - iHRIS — https://www.ihris.org/ (host currently serves a mismatched TLS certificate)
- WHO, National health workforce accounts: a handbook — https://www.who.int/publications/i/item/9789241513111